#include <iostream>
#include <cmath>
using namespace std;
class Point{
private:
    int x;
    int y;
public:
    Point(int x,int y){
        this->x=x;
        this->y=y;
    }
    ~Point(){
        cout<<"Point: "<<this<<" is destroyed!"<<endl;
    }
    double distanceTo(Point p){
        //两点间的距离：(x1-x2的平方)+(y1-y2的平方)，开平方
        return sqrt(pow(p.x-this->x,2)+pow(p.y-this->y,2));
    }
};
int main(){
    Point p1(1,0);
    Point p2(2,0);
    cout<<"p1和p2的距离是: "<<p1.distanceTo(p2)<<endl;
    //p2 作为参数传递给 distanceTo 方法时，会创建一个临时的 
    //Point 对象 p，这个临时对象在 distanceTo 方法执行完毕后会被销毁
    //因此调用了一次析构函数。也就是最终会看到三个析构函数执行。
    return 0;
}